package com.luyou.awt.dialog;

import javax.swing.*;
import java.awt.*;

/**
 * Dialog是Window类的子类，是一个容器类，属于特殊组件。对话
 * 框是可以独立存在的顶级窗口，因此用法与普通窗口的用法几乎完全
 * 一样。但对话框有如下两点需要注意。
 *
 * ➢ Dialog是Window类的子类，是一个容器类，属于特殊组件。对话框是可以独立存在的顶级窗口，
 * 因此用法与普通窗口的用法几乎完全一样。但对话框有如下两点需要注意。
 * 对话框通常依赖于其他窗口，就是通常有一个parent窗口。
 *
 * ➢ 对话框有非模式（non-modal）和模式（modal）两种，当某个模式对话框被打开之后，
 * 该模式对话框总是位于它依赖的窗口之上；在模式对话框被关闭之前，它依赖的窗口无法获得焦点。
 * 对话框有多个重载的构造器，它的构造器可能有如下三个参数。
 *
 * ➢ owner：指定该对话框所依赖的窗口，既可以是窗口，也可以是对话框。
 * ➢ title：指定该对话框的窗口标题。
 * ➢ modal：指定该对话框是否是模式的，可以是true或false。
 *
 * -Dfile.encoding=gbk
 */
public class DialogTest {

    JFrame f = new JFrame("测试");

    //模式对话框,相当于有遮罩层,无法点击原触发窗口
    Dialog d1 = new Dialog(f, "模式对话框", true);
    Dialog d2 = new Dialog(f, "非模式对话框", false);

    Button b1 = new Button("打开模式对话框");
    Button b2 = new Button("打开非模式对话框");

    private void init(){
        d1.setBounds(20, 30, 300, 400);
        d2.setBounds(20, 30, 300, 400);

        b1.addActionListener(e -> d1.setVisible(true));
        b2.addActionListener(e -> d2.setVisible(true));

        f.add(b1);
        f.add(b2, BorderLayout.SOUTH);
        f.pack();
        f.setVisible(true);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public static void main(String[] args) {
        new DialogTest().init();
    }

}
